Namespace to see dependency
#C#
#F#
#Unity
Dependencies is Evil
上の画像の様に、コンポーネントを参照する関係で
下層にあるCoreが上層にあるPlayerを参照しようとしだすと
依存関係が壊れる
Cycle Refernce はバグの元
https://gyazo.com/8833e42db0750b32a821fb6a87be7861
依存関係は階層化し、下のモジュールは上のモジュールを参照してはいけない
下層のモジュールは何も参照しない(コア機能)
https://gyazo.com/0d2236bc86b311fd2485966f4aaaa27b
名前空間を分けることで、大規模なクラス階層の依存関係をなるべく独立できる
下に行くほど安定性を高くする
安定性 = 変更を少なく、よくテストされた信頼できるコードだけを置くことを指す
using keyword
C#ではusing
F#では open
を使ってネームスペースを現在のネームスペースに統合する(相手は影響なし)
ただし、コード中で明確にインポート元を記述するときは書かないのもあり
Separate Intaract
戦闘目的のクリックと
移動目的のクリックを分ける
code: .fs
member private this.Update() =
this.IntaractWithMovement()
this.IntaractWithCombat()
// まだ実装してないメソッドは NotImplementedException を投げとけば良い
member this.IntaractWithMovement() = raise (System.NotImplementedException())
member this.IntaractWithCombat() = raise (System.NotImplementedException())
with F#
Unity向けに.dllをエクスポートすると、namespace直下に定義されているtypeしか
クラスライブラリとしては利用できないっぽいので、
moduleを使わない運用でいいかもしれない
(namespace + ファイル分割)